[update] AWS Elemental MediaConnectにsource stream monitoring機能が追加されました

[update] AWS Elemental MediaConnectにsource stream monitoring機能が追加されました

MediaConnectに入力してるストリームの情報がマネジメントコンソールやAPI経由で確認できるようになりました。映像や音声のコーデック、解像度、フレームレート、サンプルレート、そしてPIDなどの情報が参照できます。
Clock Icon2024.07.18

はじめに

清水です。AWS Media Servicesの細かなアップデートを押さえておこうのコーナー、本エントリでは2024/06/19付けでWhat's New at AWSに投稿された、AWS Elemental MediaConnectの以下アップデートについてお届けします。

高品質で信頼性と安全性に優れたライブ動画伝送サービスであるAWS Elemental MediaConnectで、Flowに入力されたトランスポートストリームならびにそのプログラムメディアに関する情報が提供されるようになりました。 Source stream monitoring もしくは Source metadata monitoring と名付けられています。トラブル発生時の原因特定や解決に利用でき、またライブブロードキャストの中断を最小限に抑えるの役立ちます。

上記の通りWhat's New at AWSへの投稿は2024/06/19付けで、AWS Elemental MediaConnect User GuideのDocument history for user guideにも2024/06/18付けの更新があります。ただ2024/03/08ならびに2023/12/22にもSource stream monitoring関連の更新がありました。

ss18
引用元: Document history for user guide - AWS Elemental MediaConnect

API関連の更新についても確認してみます。Source stream monitoring機能で使用すのはDescribeFlowSourceMetadata API、AWS CLIではのdescribe-flow-source-metadataサブコマンドです。AWS CLIでは2023/12/23付けのVersion 1.32.7の更新でThis release adds the DescribeSourceMetadata API.という項目が確認できました。

APIについては外部サイトですがAWS API Changesにて、2023/12/22付けでDescribeFlowSourceMetadataというAPIが追加されたことが確認できます。

今回のアップデートであるSource stream monitoring機能、もしかしたら以前から(ひっそりと?)APIでの利用やマネジメントコンソールでの表示が可能で、改めて機能の更新や追加などしつつWhat's New at AWSに掲載されたのかもしれません。

本エントリでは、このSource stream monitoring(Source metadata monitoring)機能について、実際にMediaConnect Flowを稼働させた際に参照できる内容をマネジメントコンソールやAWS CLIから確認してみました。

Source stream monitoringをマネジメントコンソールから使ってみた

それでは実際にMediaConnect Flowリソースを準備、映像伝送を行った状態でSoruce stream monitoringでどのような情報が参照できるのか確認してみます。検証用リソースの作成からはじめます。

検証用リソース準備とSource metadata項目の確認

まずはMediaConnectのFlowリソースを作成します。Sourceのプロトコルについて、今回はRTPを使用しました。なお、MediaConnect Flowへの入力にはMediaLiveのRTP Outputを使用します。以下のブログエントリと同様の構成です。

MediaLiveリソースが2回でてきて少し混乱しやすいので、構成図についても記載しておきます。

ss06

MediaConnect Flowの作成とSource metadata項目の確認

以下の設定でMediaConnect Flowを作成しました。Allowlist CIDR blockについては入力となるMediaLive側リソースに合わせて適宜変更します。

ss07

ss09

作成後、マネジメントコンソールのFlowリソース詳細画面を確認してみましょう。 Source metadata という項目がありますね。ここからSource streamを確認することができます。

ss10

Source metadataタブを開いてみます。この時点ではまだFlowをStartしていない状態ですので、以下のように Start this flow to see source metadata という表示があるのみでした。

ss11

RTP OutputなMediaLiveリソースの作成

続いて、このMediaConnect Flowへの入力となるMediaLive Output(RTP OutputなMediaLive Channel)を作成します。詳細な手順は先ほどのブログエントリをご確認ください。ポイントとしては以下となります。

  • MediaLive側の入力としてはRTMP (push)を使用
  • Channel作成の際、OutputでUDPを選択
    • UDP destinationsは rtp://[MediaConnect SourceのInbound IP address]:5432
  • MediaLive Channel作成後のEgress endpointのSource IPを、MediaConnectのFlow側の許可IPアドレスに指定

なお、UDP Outputの設定について、参考にしているブログエントリ内では解像度とコーデックを指定していました。本エントリでは この段階では解像度、コーデックなどOutputの設定は行っていません。 (のちほど、少し設定変更して確認を行います。)

ss12

ss28

MediaConnectをInputとするMediaLiveリソースの作成

RTP OutputなMediaLive Channelが作成できたら、続いてMediaConnectをInputとするMediaLiveリソースを作成します。こちらも詳細な手順は先ほどのブログエントリをご確認ください。

変更点として、WorkflowのInput typeでMediaConnectを選択し既存のMediaConnect Flowリソースを指定する、という手順だとなぜかこのリソースの作成に失敗してしまう、ということがありました。原因の深追いなどはしておりませんが、取り急ぎ回避策として、あらかじめこのMediaConnect Flowを入力としたMediaLive Inputを作成、Workflow wizardのInputの選択ではこの作成済みのInputを使用することとしました。

ss14

ss15

ss16

なおこのWorkflow wizardで作成したリソース1式については、MediaConnectからの出力、伝送された映像の視聴確認に使用します。MediaPackage HLS endpointのPreview playerのリンク先で映像を確認しました。

ss19

映像伝送時のSource stream monitoringの確認

検証用リソースが準備できました。それでは実際に映像伝送を行い、Source stream monitoringでどのような情報が参照できるのか確認していきます。

MediaConnect FlowのみStart

まずは作成した検証リソースのうち、MediaConnect FlowのみStartさせActive Statusにしてみます。この状態で先ほどと同様に、マネジメントコンソールのFlowリソース詳細画面からSource metadataの項目を確認してみます。以下のように Latest change to source metadata の情報のみ更新されました。また Program information is not available という表示も確認できますね。

ss20

MediaLive ChannelをStart、映像伝送を開始

続いて、MediaConnectへのInputならびにOutputとなる2つのMediaLive ChannelもStartさせRunningのStatusにします。またStreamig Software(今回はOBS Studioを使用しました)から映像をMediaLive Channelへ打ち上げます。これで、MediaLive → MediaConnect → MediaLiveなかたちで映像伝送が開始されました。この状態でSource stream monitoringを確認してみましょう。Program - PID 408 の項目が追加されています。

ss21

[Expand all programs]ボタンですべての項目を展開してみます。Videoのコーデックやフレームレートや解像度などの情報、またAudioについてもコーデックやサンプルレートなどの情報が確認できますね。ID3に付いての情報や、各StreamのPIDなども確認できます。

ss22

なお、VideoやAudioのコーデック、解像度やフレームレート、サンプルレートなどの情報は映像打ち上げ元のStreaming Softwareの設定と一致しています。(その後にMediaLiveが入りますが、Outputについての設定を行っていないのでパススルーされている認識です。)

伝送している映像の設定を変更してSource metadataを確認

続いてMediaConnectにRTP Outputを行っているMediaLive ChannelならびにStreamig Softwareからの映像の打ち上げを一旦停止し、RTP Outputの設定をいくつか変更してみます。

MediaLive ChannelのUDP Output、Stream settingsのVideoの項目を変更します。具体的には以下を設定しました。設定前はいずれも設定値なしでMediaLiveへの入力映像の設定がそのまま使われていた状態です。

  • 解像度を1920x1080に
    • Widthに1920、Heightに1080を指定
  • コーデックをH.265/HEVCに
    • Codec SettingsでH265を選択
  • Frame rateを 23.976fpsに
    • Framerate Numeratorに24000、Framerate Denominatorに1001を指定

ss23

またOutput settingsのNetwork Settingsの項目のうち、PID Settingsで以下のように設定を行いました。(なお、筆者はPID(packet identifier)について疎く、MediaConnect source stream monitoringでの確認のみに用途を絞って変更を行っています。設定している値自体の整合性といった点は確認できておりません。)

  • Video PIDを481から483に変更
  • Auido PIDsを482-498から492-498に変更

ss24

またMediaConnectで伝送する映像がH.265/HEVCになるため、後続のMediaLive(MediaConnectをInputとするMediaLive)のInput specificatiomnsでInput codecをHEVCに変更しておきます。

ss25

映像伝送を再開し、Source stream monitoringを確認してみます。RTP OutputなMediaLiveで変更した値どおりに、Videoのコーデック、フレームレート、解像度が変更されていますね。(フレームレートについては四捨五入されています。)またVideoとAudio、それぞれのPIDもMediaLive側で変更したとおりの値となっていることが確認できます。

ss26

ss27

Source stream monitoringをAWS CLIからも使ってみた

実際にMediaConnectで映像伝送を行っている際にSource stream monitoringで参照できる情報をマネジメントコンソールから確認してみました。このSoruce stream monitoring、冒頭で述べた通りAPIからも情報が取得できます。今回はAWS CLIのaws mediatailro describe-flow-source-metadataを使って情報を参照してみました。

AWS CLIの実行はAWS CloudShell上から行いました。以下の環境となります。

[cloudshell-user@ip-10-132-69-4 ~]$ aws --version
aws-cli/2.17.10 Python/3.11.8 Linux/6.1.96-102.177.amzn2023.x86_64 exec-env/CloudShell exe/x86_64.amzn.2023

aws mediatailro describe-flow-source-metadataの書式

まずはdescribe-flow-source-metadataサブコマンドの書式について確認しておきましょう。以下がAWS CLI Command Referenceです。

書式は以下のようになります。引数としてSource streamを参照するMediaConnect FlowのARNを指定します。

$ aws mediaconnect describe-flow-source-metadata \
  --flow-arn <value>

FlowをStartさせる前のレスポンス

まずはFlowリソース作成直後、Startさせていない状態のレスポンスを確認してみました。マネジメントコンソールで確認したときと同様、FlowをStartさせてACTIVEにしないと情報が表示できな旨のエラーが返りました。

[cloudshell-user@ip-10-132-69-4 ~]$ aws mediaconnect describe-flow-source-metadata \
>   --flow-arn arn:aws:mediaconnect:ap-northeast-1:123456789012:flow:1-C1xxxxxxxxxxxxxxxxxxxxxxxxx7b:mediaconnect-rtp-source-flow

An error occurred (BadRequestException) when calling the DescribeFlowSourceMetadata operation: Bad request: The flow must be in ACTIVE state to perform this action

FlowをStartさせた直後のレスポンス

続いてFlowをStartさせActive Statusにした直後、映像の入力がない状態です。こちらも先ほどマネジメントコンソールで確認したときと同様、Timestampの記録のみ値が返りました。その他の情報はまだない状態ですね。

映像を入力する前です。

[cloudshell-user@ip-10-132-69-4 ~]$ aws mediaconnect describe-flow-source-metadata \
>   --flow-arn arn:aws:mediaconnect:ap-northeast-1:123456789012:flow:1-C1xxxxxxxxxxxxxxxxxxxxxxxxx7b:mediaconnect-rtp-source-flow
{
    "FlowArn": "arn:aws:mediaconnect:ap-northeast-1:123456789012:flow:1-C1xxxxxxxxxxxxxxxxxxxxxxxxx7b:mediaconnect-rtp-source-flow",
    "Messages": [],
    "Timestamp": "2024-07-17T09:12:56.811000+00:00",
    "TransportMediaInfo": {
        "Programs": []
    }
}

映像伝送を開始したあとのSource streamの情報

実際に映像伝送を開始する前、2つパターンのレスポンスを確認してきましたが、いよいよ本題の映像伝送時のレスポンスの確認です。以下のように、マネジメントコンソールで確認した情報と同様のものがAWS CLIから参照できました。

[cloudshell-user@ip-10-132-69-4 ~]$ aws mediaconnect describe-flow-source-metadata \
>   --flow-arn arn:aws:mediaconnect:ap-northeast-1:123456789012:flow:1-C1xxxxxxxxxxxxxxxxxxxxxxxxx7b:mediaconnect-rtp-source-flow
{
    "FlowArn": "arn:aws:mediaconnect:ap-northeast-1:123456789012:flow:1-C1xxxxxxxxxxxxxxxxxxxxxxxxx7b:mediaconnect-rtp-source-flow",
    "Messages": [],
    "Timestamp": "2024-07-17T09:21:52.812000+00:00",
    "TransportMediaInfo": {
        "Programs": [
            {
                "PcrPid": 481,
                "ProgramNumber": 1,
                "ProgramPid": 480,
                "Streams": [
                    {
                        "Codec": "H264",
                        "FrameRate": "30",
                        "FrameResolution": {
                            "FrameHeight": 720,
                            "FrameWidth": 1280
                        },
                        "Pid": 481,
                        "StreamType": "Video"
                    },
                    {
                        "Channels": 2,
                        "Codec": "AAC",
                        "Pid": 482,
                        "SampleRate": 48000,
                        "SampleSize": 16,
                        "StreamType": "Audio"
                    },
                    {
                        "Codec": "ID3",
                        "Pid": 502,
                        "StreamType": "Data"
                    }
                ]
            }
        ]
    }
}

伝送している映像の設定を変更したあとのSource stream情報

マネジメントコンソールで確認したときと同じように、伝送している映像の設定を変更したあとのaws mediaconnect describe-flow-source-metadataサブコマンドの出力についても確認してみましょう。解像度を1920x1080、コーデックをH.265/HEVC、Frame rateを23.976fps、そしてPIDについても変更しました。変更した内容がdescribe-flow-source-metadataコマンドのレスポンスでも確認できますね。

[cloudshell-user@ip-10-132-69-4 ~]$ aws mediaconnect describe-flow-source-metadata \
>   --flow-arn arn:aws:mediaconnect:ap-northeast-1:123456789012:flow:1-C1xxxxxxxxxxxxxxxxxxxxxxxxx7b:mediaconnect-rtp-source-flow
{
    "FlowArn": "arn:aws:mediaconnect:ap-northeast-1:123456789012:flow:1-C1xxxxxxxxxxxxxxxxxxxxxxxxx7b:mediaconnect-rtp-source-flow",
    "Messages": [],
    "Timestamp": "2024-07-17T09:36:16.812000+00:00",
    "TransportMediaInfo": {
        "Programs": [
            {
                "PcrPid": 483,
                "ProgramNumber": 1,
                "ProgramPid": 480,
                "Streams": [
                    {
                        "Codec": "H265",
                        "FrameRate": "23.98",
                        "FrameResolution": {
                            "FrameHeight": 1080,
                            "FrameWidth": 1920
                        },
                        "Pid": 483,
                        "StreamType": "Video"
                    },
                    {
                        "Channels": 2,
                        "Codec": "AAC",
                        "Pid": 492,
                        "SampleRate": 48000,
                        "SampleSize": 16,
                        "StreamType": "Audio"
                    },
                    {
                        "Codec": "ID3",
                        "Pid": 502,
                        "StreamType": "Data"
                    }
                ]
            }
        ]
    }
}

まとめ

AWS Elemental MediaConnectのSource stream monitoring機能をマネジメントコンソールとAWS CLIから使ってみました。MediaConnectに入力している映像や音声のコーデック、解像度、フレームレート、サンプルレート、そしてPIDなどの情報が参照できます。映像伝送でトラブルなどが生じた際、Source stream monitoringを利用することで入力映像側で意図しない設定をしてしまっていないか、という確認が容易に行えるかと思います。積極的に活用していきたい機能だと思いました。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.